/**
 *@Name: CCa100
 *@Description: Clase que manipula tabla de pagos Ca100
 *@Version: 1.0.7
 *@Author: Andrés Albán
 */
package contabilidad;

import conexion.CConexion;
import java.sql.*;
import utilitario.CFecha;
import validaciones.CLogin;

public class CCa100 extends CConexion {

    private String compania = null;
    private String numeroAsiento = null;
    private String numeroIngreso = null;
    private String comprobante = null;
    private String fechaCobro = null;
    private String tipoTransaccion = null;
    private String tipoPago = null;
    private String valorPago = null;
    private String banco = null;
    private String cuentaBancaria = null;
    private String numeroRetencion = null;
    private String usuarioActual = null;
    private String fechaActual = null;
    private String fechaCancelacion = null;
    private String codigoAuxiliar = null;
    private CFecha fechaSistema = null;

    /**Constructor de la clase*/
    public CCa100() {
        /*Instanciación de clases*/
        login = new CLogin();
        fechaSistema = new CFecha();
        /*Inicialización de variables*/
        this.compania = login.getCompaniaActual();
        this.usuarioActual = login.getUsuarioLogin();
        this.fechaActual = fechaSistema.getFechaCompleta();
        this.fechaCancelacion = "1900-01-01";
    }

    /**Crear un registro en la tabla Ca100*/
    public void crear(String noas, String noing, String comp, String fech, String titr, String tipo, String valo, String banc, String ctab, String noret, String coax) throws SQLException {
        this.numeroAsiento = noas; //numero de asiento
        this.numeroIngreso = noing;
        this.comprobante = comp;
        this.fechaCobro = fech;
        this.tipoTransaccion = titr;
        this.tipoPago = tipo;
        this.valorPago = valo;
        this.banco = banc;
        this.cuentaBancaria = ctab;
        this.numeroRetencion = noret;
        this.codigoAuxiliar = coax;
        String sqlCrearCa100 = "insert into ca100 values('" + compania + "'," + numeroAsiento + "," + numeroIngreso + ",'" + comprobante + "','" + fechaCobro + "','" + tipoTransaccion + "','" + tipoPago + "'," + valorPago + ",'" + banco + "','" + cuentaBancaria + "','" + numeroRetencion + "','" + usuarioActual + "','" + fechaActual + "','" + usuarioActual + "','" + fechaActual + "','" + fechaCancelacion + "'," + codigoAuxiliar + ")";
        Statement stncCrearCa100 = this.getConexion().createStatement();
        stncCrearCa100.execute(sqlCrearCa100);
        stncCrearCa100.close();
    }

    /**Resultset con el registro deseado de la tabla Ca100*/
    public ResultSet buscaCobro() throws SQLException {
        String sqlBuscarCa100 = "select ca100noas,ca100noing,ca100yearord,ca100fech,ca100titr,sum(if(ca100tipo!='RE', + ca100valo,0)) as ca100caja, sum(if(ca100tipo='RE', + ca100valo,0)) as ca100ret, sum(ca100valo) as ca100total from ca100 where ca100nocia='" + this.compania + "' and ca100noas='" + this.numeroAsiento + "' and ca100titr='" + this.tipoTransaccion + "'";
        Statement stncBuscarCa100 = this.getConexion().createStatement();
        System.out.println(sqlBuscarCa100);
        ResultSet rsBuscaCa100 = stncBuscarCa100.executeQuery(sqlBuscarCa100);
        return rsBuscaCa100;
    }

    public ResultSet pagosEfectuados(String yearorden) throws SQLException {
        String sqlPagosEfectuados = "select * from ca100 where ca100yearord ='" + yearorden + "'";
        Statement stncPagosEfectuados = this.getConexion().createStatement();
        ResultSet rsPagosEfectuados = stncPagosEfectuados.executeQuery(sqlPagosEfectuados);
        return rsPagosEfectuados;
    }

    public Double valorDiario(String fecha, String titr, String tipo) throws SQLException {
        String sqlValorDiario = "select sum(ca100valo) as suma from ca100 where ca100fech ='" + fecha + "' and ca100tipo='" + tipo + "'";
        if (!titr.isEmpty()) {
            sqlValorDiario += " and ca100titr='" + titr + "'";
        }
        Statement stncValorDiario = this.getConexion().createStatement();
        ResultSet rsValorDiario = stncValorDiario.executeQuery(sqlValorDiario);
        rsValorDiario.next();
        Double valor = rsValorDiario.getDouble("suma");
        return valor;
    }

    public ResultSet buscarPorTipo(String fecha, String titr, String tipo) throws SQLException {
        String sqlBuscarPorTipo = "select * from ca100 where ca100tipo='" + tipo + "'";
        if (!fecha.isEmpty()) {
            sqlBuscarPorTipo += " and ca100fech ='" + fecha + "'";
        }
        if (!titr.isEmpty()) {
            sqlBuscarPorTipo += " and ca100titr='" + titr + "'";
        }
        Statement stncBuscarPorTipo = this.getConexion().createStatement();
        ResultSet rsBuscarPorTipo = stncBuscarPorTipo.executeQuery(sqlBuscarPorTipo);
        return rsBuscarPorTipo;
    }
}
